package sdk

import (
	"bufio"
	"encoding/json"
	"fmt"
	"io"
	"os"
	"willow/common/logs"
)

/**
 * 转化为json
 */
func JsonEncode(obj interface{}) string {
	buf,err := json.Marshal(obj)
	if  err != nil {

	}
	return string(buf)
}

/**
 * json转化为interface
 */
func JsonDecode(str string, resutlJson interface{})  {
	if err := json.Unmarshal([]byte(str),&resutlJson); err != nil {

	}
}

/**
 * 处理byte数组转字符串时多出结尾字符的问题
 */
func ByteString(byteVal []byte) string {
	for i := len(byteVal)-1; i >=0 ; i--  {
		if byteVal[i] != 0{
			return string(byteVal[:i+1])
		}
	}
	return ""
}

/**
 * 创建文件并写入文件
 */
func WriteFile(path string, str string ,flag int) int8 {
	file,err := os.OpenFile(path,flag,0666)
	defer file.Close()
	if err != nil {
		logs.ErrorLog(err.Error())
		return -1
	}
	write := bufio.NewWriter(file)
	write.WriteString(str+"\n")

	err = write.Flush()
	if err != nil {
		logs.ErrorLog(err.Error())
		return -1
	}
	return 1
}

/**
 * 读取文件
 */
func ReadFile(path string) []string {
	file,err := os.OpenFile(path,os.O_RDONLY | os.O_CREATE,0666)
	if err != nil {
		fmt.Println("open file err=",err)
	}

	if os.IsNotExist(err) {
		return nil
	}
	defer file.Close();

	stringConf := []string{}
	reader := bufio.NewReader(file)							//带缓冲区的读取文件的方式，适合文件比较大的情况
	for  {
		str,err := reader.ReadString('\n')  			//读取到一个换行符结束
		stringConf = append(stringConf, str)
		if err != nil || err == io.EOF {					//io.EOF表示文件的末尾
			break
		}
	}
	return stringConf
}